+2006-12-09 Matthias Clasen <mclasen@redhat.com>
+
+ * gdk-pixbuf-loader.c (gdk_pixbuf_loader_write): Behave as
+ documented and close the loader when returning FALSE.
+
2006-10-29 Tor Lillqvist <tml@novell.com>
* pixbufloader_*.def
eaten = gdk_pixbuf_loader_eat_header_write (loader, buf, count, error);
if (eaten <= 0)
- {
- gdk_pixbuf_loader_ensure_error (loader, error);
- return FALSE;
- }
+ goto fail;
count -= eaten;
buf += eaten;
if (count > 0 && priv->image_module->load_increment)
{
- gboolean retval;
- retval = priv->image_module->load_increment (priv->context, buf, count,
- error);
- if (!retval)
- gdk_pixbuf_loader_ensure_error (loader, error);
-
- return retval;
+ if (!priv->image_module->load_increment (priv->context, buf, count,
+ error))
+ goto fail;
}
return TRUE;
+
+ fail:
+ gdk_pixbuf_loader_ensure_error (loader, error);
+
+ priv->closed = TRUE;
+
+ if (priv->image_module && priv->holds_threadlock)
+ {
+ _gdk_pixbuf_unlock (priv->image_module);
+ priv->holds_threadlock = FALSE;
+ }
+
+ return FALSE;
}
/**